// Pipit C标准库 - 系统调用模块实现
#include "pipit_stdlib.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#ifdef _WIN32
#include <io.h>
#include <fcntl.h>
#else
#include <unistd.h>
#endif

// 读取整数
int pipit_syscall_read_int() {
    int value;
    scanf("%d", &value);
    return value;
}

// 读取浮点数
double pipit_syscall_read_float() {
    double value;
    scanf("%lf", &value);
    return value;
}

// 读取字符串
char* pipit_syscall_read_string() {
    char* buffer = (char*)malloc(256);
    if (buffer) {
        scanf("%255s", buffer);
    }
    return buffer;
}

// 读取行
char* pipit_syscall_read_line() {
    char* buffer = (char*)malloc(256);
    if (buffer) {
        fgets(buffer, 256, stdin);
        // 移除换行符
        buffer[strcspn(buffer, "\n")] = 0;
    }
    return buffer;
}

// 打印整数
void pipit_syscall_print_int(int value) {
    printf("%d", value);
}

// 打印浮点数
void pipit_syscall_print_float(double value) {
    printf("%f", value);
}

// 打印字符串
void pipit_syscall_print_string(const char* value) {
    printf("%s", value);
}

// 打印行
void pipit_syscall_print_line(const char* value) {
    printf("%s\n", value);
}

// 获取环境变量
char* pipit_syscall_getenv(const char* name) {
    char* env = getenv(name);
    if (env) {
        char* result = (char*)malloc(strlen(env) + 1);
        if (result) {
            strcpy(result, env);
        }
        return result;
    }
    return NULL;
}

// 系统命令执行
int pipit_syscall_system(const char* command) {
    return system(command);
}